Data corruption in data storage environments can have many different causes, such as hardware, network, disks, environmental, radiation, electrical, software and more, all leading to a data error in client applications. In today's data environment where more and more focus is on distributed data and applications, the problem moves from more secure data centers, DCs, to small Internet of Things, IoT, devices and Internet. To mitigate problems with data errors, DCs replicate the data over several DC sites to have copies of the data available at all times. However, replicating copies of data creates time gaps between the data copies, multiplies the amount of data, and also creates a lot of extra work for the DCs to be able to maintain all the data.
The introduction of Forward Error Correction, FEC, codes greatly improved this situation in DCs for the handling of Redundant Array of Inexpensive Disks, RAID. However, the present Reed-Solomon FEC code and similar FEC codes are not well suited for distributed data storage handling of tomorrow's needs for widely distributed storage. Today the standard for storage is to use a systematic erasure code, where the systematic code refers to the case when input data is embedded in the encoded output, and on the other side a non-systematic code refers to the case where the output does not contain the input symbols. By nature the Mojette transformation is a non-systematic code and does not have an optimal performance during non-erasure operation modes and also does not fit directly into legacy data storage erasure code frameworks or erasure code-aware code frameworks designed to for systemic erasure code libraries.
The Mojette transform is by nature a non-systematic code and the parity chunks have a larger size (1+ε) than a corresponding systematic chunk, where epsilon is ε>0 making the party chunks (m) containing more information than data chunks. This property of the m parity chunks can later be seen to be used on modern CPU's for the purpose of reducing the CPU cycles of the decoding process having aligned packages of the m parity projections with a ε»0, as a basis to create an optimal performance.
As an example of systematic code, Reed-Solomon codes runs with optimal performance when no erasure is present when it is a systematic code but suffers severely during operation when there is a need for erasure to be present. This unpredictable performance of Reed-Solomon makes the use of erasure code mainly suitable for cold data storage and applications where performance is of less importance. There is therefore a need within the technology to provide alternative mechanisms related to the encoding and decoding of data in order to counter the known draw-backs. The present advancements aims to provide such mechanism to at least mitigate some of the drawbacks of the conventional encoding and decoding mechanisms.